
"""
数据分析的状态
"""

from langgraph.graph import MessagesState
from pydantic import Field
from typing import List


class AnalyzeState(MessagesState):
    # 是否自动决策
    auto_decision: bool = Field(default=True, description="是否自动决策")
    # 最大错误重试次数
    max_retry_times: int = Field(default=3, description="最大错误重试次数")
    # 当前错误重试次数
    cur_retry_times: int = Field(default=0, description="当前错误重试次数")
    # 任务的初始描述
    task_description: str = Field(default="", description="任务描述")
    # 改写的任务描述
    revised_task: str = Field(default="", description="改写的任务描述")
    # 获取的数据表
    datasets: List = Field(default=[], description="根据任务描述获取相应的数据表")
    # 分拆的任务列表
    decomposed_tasks: List = Field(default=[], description="结合任务描述及数据表的信息，对任务进行分解，使得每个任务均可由PandasAI执行")
    # 分析内容
    analyze_content: List = Field(default=[], description="分析内容")
    # 分析报告
    report_content: str = Field(default='', description="分析报告")
